import pandas as pd
import matplotlib.pyplot as plt

# 假设已经获取到的数据存储在df中，列名分别为'date'（日期）、'ten_year_yield'（十年国债收益率）、'three_month_yield'（3个月国债收益率）
# 这里先模拟一份简单数据示例，你实际使用时替换为真实获取的数据
data = {
    'date': ['2024-01-01', '2024-02-01', '2024-03-01', '2024-04-01', '2024-05-01'],
    'ten_year_yield': [2.5, 2.6, 2.4, 2.7, 2.8],
    'three_month_yield': [1.8, 1.9, 1.7, 2.0, 2.1]
}
df = pd.DataFrame(data)

# 将日期列转换为日期时间类型
df['date'] = pd.to_datetime(df['date'])

# 计算利差
df['yield_spread'] = df['ten_year_yield'] - df['three_month_yield']

# 设置中文字体为黑体，以正常显示中文标签
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解决负号显示问题
plt.rcParams['axes.unicode_minus'] = False

# 创建一个图形和一组子图
fig, ax1 = plt.subplots(figsize=(10, 6))

# 绘制十年国债收益率曲线
color = 'tab:red'
ax1.set_xlabel('日期')
ax1.set_ylabel('十年国债收益率', color=color)
ax1.plot(df['date'], df['ten_year_yield'], color=color)
ax1.tick_params(axis='y', labelcolor=color)

ax2 = ax1.twinx()
# 创建第二个y轴

# 绘制利差曲线
color = 'tab:blue'
ax2.set_ylabel('利差（十年 - 三个月）', color=color)
ax2.plot(df['date'], df['yield_spread'], color=color)
ax2.tick_params(axis='y', labelcolor=color)

# 设置图形标题
plt.title('十年国债收益率及利差曲线')

# 显示图形
plt.show()